/**
 * javaHispano 2008
 */
package org.javahispano.jwitter.data.dao;

import java.util.Collection;

/**
 * @author javaHispano
 * Dao generico
 */
public interface GenericDao<K, T> {
	
	/**
	 * Guarda un objeto en BD
	 * @param entity Objeto a guardar
	 * @return Clave primaria del objeto
	 */
	K persist(T entity);
	
	/**
	 * Actualiza un objeto en la BD
	 * @param entity
	 */
	void update(T entity);
	
	/**
	 * Borra un objeto de la BD
	 * @param entity
	 */
	void delete(T entity);
	
	/**
	 * Recupera un objeto de la BD a partir del id
	 * @param id Clave primaria del objeto buscado
	 * @return 
	 */
	T findById(K id);
	
	/**
	 * Obtiene todos los objetos del tipo T existentes en la BD
	 * @return <code>Collection</code> de objetos del tipo T
	 */
	Collection<T> findAll();
}
